Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Python - [Python] Da binario a intero...
Forum - Python - [Python] Da binario a intero...

Avatar
BustinGame (Normal User)
Newbie


Messaggi: 6
Iscritto: 07/02/2010

Segnala al moderatore
Postato alle 20:16
Venerdì, 17/12/2010
Ho appena sfornato uno script che converte da binario a intero ma ho un problema.

Intato, l'algoritmo che uso è uno riportato su questo sito:

Codice sorgente - presumibilmente Plain Text

  1. Conversione da binario a decimale
  2.  
  3. Dato il numero binario 1001110, moltiplichiamo ogni cifra per il rispettivo peso:
  4. 1 * (2^6) = 64
  5. 0 * (2^5) = 0
  6. 0 * (2^4) = 0
  7. 1 * (2^3) = 8
  8. 1 * (2^2) = 4
  9. 1 * (2^1) = 2
  10. 0 * (2^0) = 0
  11.  
  12. Qundi sommiamo i risultati ottenuti e otteniamo il numero decimale:
  13. 64 + 0 + 0 + 8 + 4 + 2 + 0 = 78



Stando a questo, ho fatto lo script ma devo aver sbagliato qualcosa. Ecco il codice; se potete, provatelo e ditemi...

Codice sorgente - presumibilmente Python

  1. print("PROGRAMMA PER LA CONVERSIONE DA CODICE BINARIO A INTERO")
  2. print
  3.  
  4. #DICHIARAZIONI
  5. binario = input("Codice binario: ")
  6. y = 1
  7. x = 0
  8. z = 0
  9. tot = 0
  10.  
  11.  
  12. for i in range(len(binario)):
  13.     a = int(binario[x:y])
  14.     b = (a * (pow(2, z)))
  15.     z = z + 1
  16.     x = x + 1
  17.     y = y + 1
  18.     tot = tot + b
  19.  
  20. print
  21. print
  22. print("Il numero reale è ", tot)


PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:39
Venerdì, 17/12/2010
Prima di reinventare la ruota, cerca sempre di vedere se Python offre gia' una soluzione ai problemi:

Codice sorgente - presumibilmente Python

  1. binario = "101"
  2. intero = int(binario, 2)
  3. print intero # 5




Il mio blog: https://piero.dev
PM Quote
Avatar
The Newbie (Member)
Pro


Messaggi: 175
Iscritto: 14/07/2010

Segnala al moderatore
Postato alle 8:33
Sabato, 18/12/2010
credo che lui voglia sapere come fare solo per uno scopo didattico.

prima di tutto c'è un errore di sintassi qui:
Codice sorgente - presumibilmente Python

  1. for i in range(len(binario))


stai cercando di trovare la lunghezza di un dato di tipo integer; la funzione len(x) è utilizzata per i tipi di dati composti (liste, stringhe, dizionari etc...). per fare in una maniera analoga e corretta, poichè noto che usi binario sempre come stringa avresti dovuto scrivere:
Codice sorgente - presumibilmente Plain Text

  1. binario = raw_input("Inserire numero binario: ")


e solo poi avresti potuto usare la funzione len()

comunque l'errore risiede nel ciclo for per l'elevamento a potenza e soprattutto nel fatto che hai elevato le cifra meno significativa all'esponente più alto, quella più significativa allo 0::-| cioè hai fatto l'algoritmo al contrario:-|

comunque puoi vedere un mio vecchio programma caricato sul sito, l'ho commentato completamente ed è in python

http://www.pierotofy.it/pages/sorgenti/dettagli/18677-SIMP ...

Ultima modifica effettuata da The Newbie il 18/12/2010 alle 9:02
PM Quote
Avatar
BustinGame (Normal User)
Newbie


Messaggi: 6
Iscritto: 07/02/2010

Segnala al moderatore
Postato alle 8:55
Sabato, 18/12/2010
Ok grazie a tutti e due, ora mi funge!

PM Quote